<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Http\Requests\PtypePostRequest;

class PtypeController extends Controller
{
    /**
     * 展示后台项目分类列表
     *
     * @return 后台项目分类数据
     */
    public function getIndex(request $request)
    {
        //获取提交参数
        $strip = $request->input('strip','10');
        $keywords = $request->input('keywords');

        if(isset($keywords)){
        
            $datas = DB::table('ptype')->where('pname','like','%'.$keywords.'%')->paginate($strip);
        }else{
            
            //查询数据库
             $datas = DB::table('ptype')->paginate($strip); 
        }
        $status = ['禁止','开启'];
        return view('Admin.ptype.index',['datas'=>$datas,'pages'=>$request->all(),'status'=>$status]);
    }

    /**
     * 展示后台添加项目分类
     *
     * @return 后台添加项目分类视图
     */
    public function getAdd()
    {
        return view('Admin.ptype.add');
    }

    /**
     * 执行数据入库
     *
     * @return 后台添加项目分类视图
     */

    public function postInsert(Request $request)

    public function postInsert(PtypePostRequest $request)
    {
        //获取需要的提交数据
        $data = $request->except('_token');

        //调用方法执行文件上传
       	$data['logo'] = $this->upload1($request);
        $data['pic'] = $this->upload2($request);
        
       	$num = DB::table('ptype')->where('pid','0')->count();
       	if($num > 0){
       		$ptype = DB::table('ptype')->where('pid','0')->first();
       		$data['pid'] = $ptype->id;
       		//数据入库
	        $res = DB::table('ptype')->insertGetId($data);

	        //判断数据是否录入成功
	        if($res)
	        {
	            return redirect('/admin/ptype/index')->with('success', '分类添加成功');
	        }else{
	            return redirect('/admin/ptype/add')->with('error', '分类添加失败');
	        }
       	}else{
       		$data['pid'] = 0;
	        $res = DB::table('ptype')->insertGetId($data);
       		 //判断数据是否录入成功
	        if($res)
	        {
	            return redirect('/admin/ptype/index')->with('success', '分类添加成功');
	        }else{
	            return redirect('/admin/ptype/add')->with('error', '分类添加失败');
	        }
       	}
        
    }
    //执行文件上传
    public function upload1($request)
    {
        //新文件名
        $name = md5(time()+rand(1,9999));

       

        //判断文件是否有上传
        if ($request->hasFile('logo')) {
             //获取文件后缀名
             $su = $request->file('logo')->getClientOriginalExtension();
            //移动文件
            $request->file('logo')->move('./public/uploads',$name.'.'.$su);

            //返回保存文件路径
            return '/public/uploads/'.$name.'.'.$su;
       $data['logo'] = $this->upload($request);
        
        //数据入库
        $res = DB::table('ptype')->insertGetId($data);

        //判断数据是否录入成功
        if($res)
        {
            return redirect('/admin/ptype/index')->with('success', '分类添加成功');
        }else{
            return redirect('/admin/ptype/add')->with('error', '分类添加失败');
        }
    }

    //执行文件上传

    public function upload2($request)

    public function upload($request)
    {
        //新文件名
        $name = md5(time()+rand(1,9999));

       

        //判断文件是否有上传
        if ($request->hasFile('pic')) {
             //获取文件后缀名
             $su = $request->file('pic')->getClientOriginalExtension();
            //移动文件
            $request->file('pic')->move('./public/uploads',$name.'.'.$su);
        if ($request->hasFile('logo')) {
             //获取文件后缀名
             $su = $request->file('logo')->getClientOriginalExtension();
            //移动文件
            $request->file('logo')->move('./public/uploads',$name.'.'.$su);

            //返回保存文件路径
            return '/public/uploads/'.$name.'.'.$su;
        }
    }

     /**
     * 执行删除操作
     *
     * @return 受影响行数
     */
    public function getDel($id)
    {

        //查询数据库
        $data = DB::table('ptype')->where('id',$id)->first();
        if($data->pid == 0)
        {
            $res = DB::table('ptype')->where('pid',$id)->count();
            if($res<1){
                    //执行删除操作
                $num = DB::table('ptype')->where('id',$id)->delete();
                return redirect('/admin/ptype/index')->with('success', '分类删除成功'); 
            }else{
                return redirect('/admin/ptype/index')->with('error', '此分类下子分类,禁止删除');
            }
        }else{
            //查询表判断分类下是否有内容
            $count = DB::table('pcontent')->where('pid',$id)->count();
            
            if($count<1){
                //执行删除操作
                $num = DB::table('ptype')->where('id',$id)->delete();
                return redirect('/admin/ptype/index')->with('success', '分类删除成功');
            }else{
                 return redirect('/admin/ptype/index')->with('error', '此分类下有内容,禁止删除');
            }
        }   

        //查询表判断分类下是否有内容
        $count = DB::table('pcontent')->where('pid',$id)->count();
        
        if($count<1){
            //执行删除操作
            $num = DB::table('ptype')->where('id',$id)->delete();
            return redirect('/admin/ptype/index')->with('success', '分类删除成功');
        }else{
             return redirect('/admin/ptype/index')->with('error', '此分类下有内容,禁止删除');
        }
       
        
    }

     /**
     * 展示后台项目分类修改
     *
     * @return object
     */
    public function getEdit($id)
    {
        //查询数据
        $datas = DB::table('ptype')->where('id',$id)->first();

        return view('Admin.ptype.edit',['datas'=>$datas]);
    }

    
    /**
     * 执行修改操作
     *
     * @return 受影响行数
     */

    public function postUpdate(PtypePostRequest $request)

    public function postUpdate(request $request)
    {
        //获取需要的提交数据
        $data = $request->except(['_token','id']);

        //调用方法执行文件上传

        $data['logo'] = $this->upload1($request);
        $data['pic'] = $this->upload2($request);

       $data['logo'] = $this->upload($request);

       //执行修改
        $res = DB::table('ptype')->where('id',$request->input('id'))->update($data);

        if($res){
        if($data){
            return redirect('/admin/ptype/index')->with('success', '分类信息修改成功');

        }else{
            return redirect('/admin/ptype/index')->with('error', '分类信息修改失败');

        }
    }
}
